module.exports = function (e) {
  var n = "[\\w-]+",
      a = "(" + n + "|@{" + n + "})",
      t = [],
      s = [],
      r = function (e) {
    return {
      className: "string",
      begin: "~?" + e + ".*?" + e
    };
  },
      i = function (e, n, a) {
    return {
      className: e,
      begin: n,
      relevance: a
    };
  },
      c = {
    begin: "\\(",
    end: "\\)",
    contains: s,
    relevance: 0
  };

  s.push(e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE, r("'"), r('"'), e.CSS_NUMBER_MODE, {
    begin: "(url|data-uri)\\(",
    starts: {
      className: "string",
      end: "[\\)\\n]",
      excludeEnd: !0
    }
  }, i("number", "#[0-9A-Fa-f]+\\b"), c, i("variable", "@@?" + n, 10), i("variable", "@{" + n + "}"), i("built_in", "~?`[^`]*?`"), {
    className: "attribute",
    begin: n + "\\s*:",
    end: ":",
    returnBegin: !0,
    excludeEnd: !0
  }, {
    className: "meta",
    begin: "!important"
  });
  var l = s.concat({
    begin: "{",
    end: "}",
    contains: t
  }),
      o = {
    beginKeywords: "when",
    endsWithParent: !0,
    contains: [{
      beginKeywords: "and not"
    }].concat(s)
  },
      d = {
    begin: a + "\\s*:",
    returnBegin: !0,
    end: "[;}]",
    relevance: 0,
    contains: [{
      className: "attribute",
      begin: a,
      end: ":",
      excludeEnd: !0,
      starts: {
        endsWithParent: !0,
        illegal: "[<=$]",
        relevance: 0,
        contains: s
      }
    }]
  },
      b = {
    className: "keyword",
    begin: "@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",
    starts: {
      end: "[;{}]",
      returnEnd: !0,
      contains: s,
      relevance: 0
    }
  },
      g = {
    className: "variable",
    variants: [{
      begin: "@" + n + "\\s*:",
      relevance: 15
    }, {
      begin: "@" + n
    }],
    starts: {
      end: "[;}]",
      returnEnd: !0,
      contains: l
    }
  },
      u = {
    variants: [{
      begin: "[\\.#:&\\[>]",
      end: "[;{}]"
    }, {
      begin: a,
      end: "{"
    }],
    returnBegin: !0,
    returnEnd: !0,
    illegal: "[<='$\"]",
    relevance: 0,
    contains: [e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE, o, i("keyword", "all\\b"), i("variable", "@{" + n + "}"), i("selector-tag", a + "%?", 0), i("selector-id", "#" + a), i("selector-class", "\\." + a, 0), i("selector-tag", "&", 0), {
      className: "selector-attr",
      begin: "\\[",
      end: "\\]"
    }, {
      className: "selector-pseudo",
      begin: /:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/
    }, {
      begin: "\\(",
      end: "\\)",
      contains: l
    }, {
      begin: "!important"
    }]
  };
  return t.push(e.C_LINE_COMMENT_MODE, e.C_BLOCK_COMMENT_MODE, b, g, d, u), {
    case_insensitive: !0,
    illegal: "[=>'/<($\"]",
    contains: t
  };
};